// 1.引入路由
import router from '@/router'
// 2.引入token
import store from '@/store'
// 12.引入跳转路由的页面的进度条--使用第三方插件NProgress--参考https://www.npmjs.com/package/nprogress
// 使用方法--1.下载 2.引入css和js 3.使用方法NProgress.start() 开启  NProgress.done() 关闭
import NProgress from 'nprogress'
import 'nprogress/nprogress.css'
// 16.导入设置页面标题的模块
import getPageTitle from '@/utils/get-page-title'
// 3.定义白名单
const whiteList = ['/login', '/404']

// 4.设置路由守卫 -- 全局路由守卫又称前置路由守卫
router.beforeEach((to, from, next) => {
  // 17.在导航守卫中，引入getPageTitle方法，传入元信息数据
  // 使用document.title设置页面标题 -- 让页面最上方的项目标题从之前的项目标题换成项目标题-页面标题
  document.title = getPageTitle(to.meta.title)
  // 13.开启进度条
  NProgress.start()
  //  5.判断用户是否有token
  const token = store.state.user.token
  if (token) {
    // 6.有token，判断是否去登录页---是--跳到首页
    if (to.path === '/login') {
      next('/')
      // 14.关闭进度条
      NProgress.done()
    } else {
      // 15.跳转前，获取用户的个人信息
      store.dispatch('user/getUseInfoAction')
      // 7.有token，判断是否去登录页---否--通行，跳到下一页
      next()
      // 14.关闭进度条
      NProgress.done()
    }
  } else {
    // 8.没有token
    // 9.判断是否去白名单
    if (whiteList.includes(to.path)) {
      // 10.是---通行
      next()
      // 14.关闭进度条
      NProgress.done()
    } else {
      // 11.否---跳到登录页
      next('/login')
      // 14.关闭进度条
      NProgress.done()
    }
  }
})
